package com.fen.testdemo;

/**
 * @description:
 * @author: lrf
 * @create: 2019-05-19
 **/
public class Value {

    /**
     * 《Java并发编程实战》（http://mng.bz/979c）一书中，Brian Goetz和合著者们为线程池大小
     * 的优化提供了不少中肯的建议。这非常重要，如果线程池中线程的数量过多，最终它们会竞争
     * 稀缺的处理器和内存资源，浪费大量的时间在上下文切换上。反之，如果线程的数目过少，正
     * 如你的应用所面临的情况，处理器的一些核可能就无法充分利用。Brian Goetz建议，线程池大
     * 小与处理器的利用率之比可以使用下面的公式进行估算：
     * N threads = N CPU * U CPU * (1 + W/C)
     *
     * 其中：
     *
     * ❑N CPU 是处理器的核的数目，可以通过 Runtime.getRuntime().availableProcessors() 得到
     *
     * ❑U CPU 是期望的CPU利用率（该值应该介于0和1之间）
     *
     * ❑W/C是等待时间与计算时间的比率
     *
     * 这里太啰嗦了，一般的设置线程池的大小规则是
     *
     * 如果服务是cpu密集型的，设置为电脑的核数
     *
     * 如果服务是io密集型的，设置为电脑的核数*2
     */
    public static void main(String[] args) {
        // 处理器的核的数目
        int i = Runtime.getRuntime().availableProcessors();
        System.out.println("i = " + i);
    }
}
